﻿#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

//struct stu
//{
//	char name[10];
//	int age;
//	float weight;
//}s1,s2;
//
//int main()
//{
//
//	return 0;
//}

//struct Point
//{
//	int x;
//	int y;
//}p1; //声明类型的同时定义变量p1
//struct Point p2; //定义结构体变量p2
////初始化：定义变量的同时赋初值。
//struct Point p3 = { 10, 20 };
//
//struct Stu //类型声明
//{
//	char name[15];//名字
//	int age; //年龄
//};
//struct Stu s = { "zhangsan", 20 };//初始化
//
//struct Node
//{
//	int data;
//	struct Point p;
//	struct Node* next;
//}n1 = { 10, {4,5}, NULL }; //结构体嵌套初始化
//
//struct Node n2 = { 20, {5, 6}, NULL };//结构体嵌套初始化
//
//int main()
//{
//	struct Point p4 = {.y = 10, .x = 20};
//	return 0;
//}
//typedef struct
//{
//	int a;
//	char b;
//	float c;
//}x;
//struct
//{
//	int a;
//	char b;
//	float c;
//}a[20], * p;

//typedef struct Node
//{
//	int data;
//	struct Node* next;
//}Node;

//typedef struct
//{
//	int a;
//	char b;
//	float c;
//}x;
//
//int main()
//{
//	x x1 = { 1,'c', 3.14f };
//	return 0;
//}


//struct s1
//{
//	int a;
//	char c;
//};
//
//struct s2
//{
//	int a;
//	char c1;
//	char c2;
//	char c3;
//};

//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//
//int main()
//{
//	printf("%d\n", sizeof(struct S2));
//	return 0;
//}

//struct S3
//{
//	double d;
//	char c;
//	int i;
//}s;
////练习4-结构体嵌套问题
//struct S4
//{
//	char c1;
//	struct S3 s3;
//	double d;
//};
//
//int main()
//{
//	printf("%d\n", sizeof(struct S4));
//	return 0;
//}


//#pragma pack(1)//设置默认对齐数为1
//struct S2
//{
//	char c1;
//	int i;
//	char c2;
//};
//#pragma pack()//取消设置的默认对齐数，还原为默认
//
//int main()
//{
//	printf("%d\n", sizeof(struct S2));
//
//	return 0;
//}

//struct S
//{
//	int data[1000];
//	int num;
//};
//struct S s = { {1,2,3,4}, 1000 };
////结构体传参
//void print1(struct S s)
//{
//	printf("%d\n", s.num);
//}
////结构体地址传参
//void print2(struct S* ps)
//{
//	printf("%d\n", ps->num);
//}
//int main()
//{
//	print1(s);//传结构体
//	print2(&s);//传地址
//	return 0;
//}

//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//
//int main()
//{
//	printf("%d\n", sizeof(struct A));
//	struct A a = { 0 };
//	a._a = 2;
//	a._b = 20;
//	a._c = 100;
//	a._d = 1024;
//	return 0;
//}


//enum Day//星期
//{
//	Mon,
//	Tues,
//	Wed = 3,
//	Thur,
//	Fri,
//	Sat,
//	Sun
//};
//int main()
//{
//	printf("%d\n", Mon);
//	printf("%d\n", Tues);
//	printf("%d\n", Wed);
//	printf("%d\n", Thur);
//	return 0;
//}

